草庐IT

c++ - DLL的开销

全部标签

windows - 如何在使用 Visual C++ 2010 命令提示符时包含/链接 DLL

我正在尝试在VC++2010命令提示符下编译一个DLL,我正在使用的函数之一在urlmon.dll中。如何将此DLL链接到我的源文件?(这只是一个.cpp文件)。我尝试将dll放在同一个文件夹中。我需要lib文件吗?目前我正在运行:cl-LD文件名我试过谷歌搜索,但没有成功。感谢那些看过的人。 最佳答案 您必须链接导入库urlmon.lib。直接链接到DLL是不可能的。(在没有该DLL的“导入库”的情况下,从DLL中获取函数的唯一其他方法是使用LoadLibrary和GetProcAddress等函数来查找、加载和提取所需的特定函数

c - JNA 简单函数调用适用于 linux (x64) 但不适用于 Windows (x86)

我正在尝试使用JNA从Java运行以下C函数,但我在x86windows(DLL)而不是x64linux(.SO)上收到错误(无效内存访问)。c函数char*testcopy(char*out,char*in){strcpy(out,in);free(in);returnout;};C测试:适用于两个平台(EclipseCDT/MVC++)通过linux共享库或windowsdll暴露函数,直接在C中调用,结果OK。...charout[10];char*res;char*in=(char*)malloc(3*sizeof(char));strcpy(in,"ab");res=test

java - "virtual"个文件

我想创建一个“虚拟”文件,访问时将被d/l(通过我的后台应用程序)。如果文件由Windows资源管理器或其他应用程序(例如MicrosoftWord...)访问,这应该有效实现它的最佳方式是什么?编辑:这可以通过ShellExtensions实现吗? 最佳答案 听起来好像您要编写一个虚拟文件系统驱动程序。这在纯C中是一项非常艰巨的任务,调试支持有限且需要多次重启。如果我没记错的话,这个任务非常艰巨,以至于有几种商业产品提供的工具和库可以大大简化实现。更新:起点是Microsoft'sInstallableFileSystemKit,

windows - 64 位 dll 寄存器

我已经使用x64构建将32位COMdll转换为64位dll。我尝试注册这个64位dll到64位Windows2008服务器uisngC:windows\system32regsrv32.exe中。但是我收到一条错误消息“Dllregister服务器失败,错误代码为0x80029c4a”。我如何在64位操作系统中注册此dll。 最佳答案 该错误代码是TYPE_E_CANTLOADLIBRARY这可能意味着调用了LoadTypeLib()在DllRegisterServer()的某处,该调用因任何原因失败。一个可能的原因是库没有添加到D

c - ZwQueryDirectoryFile 恢复

如果我必须扫描包含大量实体的文件夹,那么我将调用ZwQueryDirectoryFileapi(我需要它来自Nt级别)...逐阶段分配大小为4096的缓冲区的文件。这是一个常见的用法。除了第一次,每次我都必须将restartscan参数保持为NULL,才能完成我的工作。我需要知道它的内部结构。第二个ZwQueryDirectoryFile调用如何从正确的位置恢复提取。如何提供或存储eindex以正确执行恢复。 最佳答案 来自documentation:WhentheZwQueryDirectoryFileroutineiscalle

c - 当我的 C 文件有其他依赖项时,如何准备 ./configure make make install?

编写/阅读代码似乎比准备部署脚本(例如./configure)和为我的C应用程序制作和安装要轻松得多。我如何制作./configure文件并为以下C代码制作文件?感谢您的宝贵支持。@file:main.c:#include#include#ifndef_WIN32#ifdefH323_H46018#include"h460/h460_std18.h"H460_FEATURE(Std18);H460_FEATURE(Std19);#endif#ifdefH323_H46023#include"h460/h460_std23.h"#endif#endif//_WIN32#definenew

c++ - 链接器说 _IsolationAwareLoadLibrary 未定义 - 有什么想法吗?

我在我的代码中添加了一些提升内容*,但链接阶段失败了:errorLNK2019:unresolvedexternalsymbol_IsolationAwareLoadLibraryA@4referencedinfunction"void*__cdeclboost::interprocess::winapi::load_library(charconst*)"(?load_library@winapi@interprocess@boost@@YAPAXPBD@Z)谁能帮我解决这个问题?kernel32.lib添加到链接器设置中。我搜索了_IsolationAwareLoadLibrary

c - 我可以在文件系统驱动程序中的 ZwCreateFile/InitializeObjectAttributes 中设置/检查用户定义的标志吗?

我正在Windows下开发文件系统驱动程序,我需要检查每个访问文件的文件属性。为此,我需要为每个文件执行额外的ZwCreateFile,但它会再次返回到我的调度例程。我可以使用InitializeObjectAttributes()或ZwCreateFile()设置哪些标志以便我可以稍后检查它以便我的过滤器可以绕过此类文件访问?谢谢。 最佳答案 已解决,尝试IoCreateFileSpecifyDeviceObjectHint、IoCreateFileEx或FtlCreateFile。

c++ - Hook ntdll.dll 调用的问题

我目前正致力于通过dll注入(inject)Hookntdll.dll调用。首先,我通过CreateRemoteThread()在现有进程中创建线程然后我通过LoadLibrary加载我的dll最后HookPROCESS_ATTACH.注入(inject)工作正常,但我想记录所有注册表和文件系统查询。问题是它无法正常工作。我决定通过PasteBin发布代码,因为代码量很大。链接在这里:http://pastebin.com/39r4Me6B我正在尝试HookZwOpenKey,然后记录关键内容,然后通过指针启动“真实”功能。函数NOpenKey被执行,但进程停止,没有任何错误。有人看到

windows - 使用mfc42.dll 作为免注册COM?

我正在使用第三方Active-X控件,该控件需要在用户系统上安装特定版本的MFC42.dll。我正在尝试为我的产品的非管理员安装添加支持,并且必须安装例如mfc42.dll到系统文件夹并注册它显然使这不可能。第三方Active-X使用manifest文件作为免注册COM,想知道是否可以对MFC42.dll和MSVCRT.DLL做同样的操作,将它们存放在应用程序文件夹中?有人试过这个吗? 最佳答案 这是不可能的。MSVCRT和MFC42.dll不是COM对象,甚至不是win32程序集,因此不能使用无注册COM访问。您可以安装mfc42